Proper connect_port
[juce-lv2.git] / juce / source / extras / browser plugins / How to build a browser plugin.txt
blob82e15ea97a9c527b773229bdf494a0ef3e4837eb
1 \r
2 \r
3     Juce Browser Plugin Framework\r
4     =============================\r
5     \r
6 These classes let you easily turn a normal Juce component into a Mac/Windows NPAPI plugin \r
7 for use in Firefox, Safari, Chrome, etc., and/or an ActiveX plugin for IE.\r
8 \r
9 To create your plugin, your code just needs to implement the createBrowserPlugin() function \r
10 to return a subclass of BrowserPluginComponent, and this acts as the plugin window.\r
12 To communicate with javascript running in the host webpage, the 'var' and 'DynamicObject' juce\r
13 classes emulate javascript objects, so you can create a javascript object that represents\r
14 your plugin, and the webpage can invoke methods and access properties on this object. To\r
15 get bi-directional communication between the plugin and webpage, your webpage can simply\r
16 pass its own object to your plugin, and the plugin can call methods on this object to invoke\r
17 javascript actions.\r
19 In a similar style to audio plugins, your project has to contain a BrowserPluginCharacteristics.h\r
20 file that defines various properties of the plugin.\r
23 Building a Mac NPAPI Plugin with XCode\r
24 --------------------------------------\r
26 - Create a new "CFPlugin Bundle" project \r
27 - Add the juce wrapper source files to the project (have a look at the demo project to \r
28   find out which files this includes).\r
29 - Set up all the usual frameworks, etc, like you would for any other juce project.\r
30 - In the project or target settings, change the "Wrapper Extension" to "plugin"\r
31 - In your target, add a build phase "Build ResourceManager resources", and add the juce_NPAPI_MacResource.r file\r
32   to this step.\r
33 - Check that your info.plist contains the same items as the demo plugin, because these needs to be set for the\r
34   browser to recognise it as a plugin. In particular, the "Bundle OS Type Code" should be set to BRPL.\r
35 - The finished bundle needs to be copied into "/Library/Internet Plug-Ins", so you might want to set up a\r
36   post-build copy step to do this automatically\r
39 Building a Windows NPAPI plugin in Visual Studio\r
40 ------------------------------------------------\r
42 - Create a new project to build a win32 DLL\r
43 - Add the juce wrapper source files to the project (have a look at the demo project to \r
44   find out which files this includes).\r
45 - Your compiled plugin DLL must begin with the letters 'np' (in lower case) for it to be recognised as\r
46   a plugin, so you should make sure your target settings reflect this.\r
47 - To include the BrowserPluginCharacteristics.h file, you may need to add an include path to wherever this\r
48   file lives in your project. Don't use a global include path for this - just add it to the project's \r
49   search paths (both the c++ include paths and the resource include paths)\r
50 - (Refer to the normal juce instructions for setting up other project settings such as which c++ libs to link to etc)\r
51 - The finished plugin needs to be copied into "C:\Program Files\Mozilla Firefox\plugins", so you might want\r
52   to add a post-build step to copy it\r
53 - Note that the "browser plugins/wrapper/npapi" folder contains a copy of some NPAPI header files. If you're \r
54   building a closed-source project, please check the licensing details in these files to make sure\r
55   you're not breaking any Mozilla licensing restictions.\r
58 Building a Windows ActiveX control for Internet Explorer\r
59 --------------------------------------------------------\r
61 - This is actually quite easy, because the same DLL that functions as an NPAPI plugin can\r
62   also be used as an ActiveX control.\r
63 - Just create a windows NPAPI plugin as described above, but add the juce_ActiveX_GlueCode.cpp\r
64   file to the project.\r
65 - In your BrowserPluginCharacteristics.h file, the JuceBrowserPlugin_ActiveXCLSID setting needs\r
66   to be given a unique GUID for your plugin.\r
67 - Because the plugin is a COM object, it doesn't matter where the DLL lives, but it needs to\r
68   be registered in the normal COM way, with regsvr32.exe. Note that on Vista, this command\r
69   needs to be run with administrator permissions for it to be able to write to the registry.\r